package br.ufal.ic.p3.darv10.fachada;

import java.util.List;

import br.ufal.ic.p3.darv10.dominio.Aluno;
import br.ufal.ic.p3.darv10.dominio.Disciplina;
import br.ufal.ic.p3.darv10.dominio.Secretaria;
import br.ufal.ic.p3.darv10.excecao.DARExcecao;

public class Fachada implements IFachada {

	private Aluno a = new Aluno();
	private Disciplina dis = new Disciplina();

	public List<Aluno> getTodosAlunos() throws DARExcecao{
		return a.getAlunosBD();
	}

	public List<Disciplina> getTodasDisciplinas() throws DARExcecao{
		return dis.getDisciplinasBD();
	}

	public List<Disciplina> getTodasDisciplinasPorAluno(Aluno aluno){
		return aluno.getDisciplinasPorAluno();
	}

	public List<Disciplina> getDisciplinasDoAluno(Aluno aluno){
		return aluno.getListaDisciplinasJaCursadas();
	}

	public List<Disciplina> getDisciplinasMatriculadas(Aluno aluno){
		return aluno.getListaDisciplinasJaCursadas();
	}

	public List<Secretaria> getTodasSecretarias() throws DARExcecao{
		return Secretaria.getSecretariasBD();
	}

	public List<Disciplina> getTodasDisciplinasSecretaria(Secretaria sec){
		return sec.getListaDisciplinas();
	}

	public List<Aluno> getTodosAlunosDis(Disciplina d){
		return d.getListaAlunosMatriculados();
	}

	public String matricularAluno(Aluno a, Disciplina d) {
		try{
			d.matricularAluno(a);
			return "Matricula realizada com sucesso.";
		}catch (DARExcecao e) {
			return e.getMessage();
		}               
	}

	public String getCodigoDisciplina(Disciplina d){
		return d.getCodigoDisciplina();
	}

	public String getCreditoDisciplina(Disciplina d){
		return Integer.toString(d.getNumeroCreditos());
	}

	public String getCodPreReqDisciplina(Disciplina d){

		String codigos = new String("");

		if (!d.getListaDisciplinasPreRequisito().isEmpty()) {
			for(Disciplina dis : d.getListaDisciplinasPreRequisito()){
				if(codigos.length() != 0) {
					codigos += ", ";
				}
				codigos += dis.getCodigoDisciplina();
			}
		}
		return codigos;
	}

	public String getNumCredMinDisciplina(Disciplina d){
		return Integer.toString(d.getNumeroCreditosPreRequisito());
	}

	public String getNomedoAluno(){
		return a.getNomeAluno();
	}

	public String getMatriculaAluno(){
		return a.getMatriculaAluno();
	}

	public String getProfessorDisc(Disciplina d){
		return d.getProfessorDisciplina().getNomeProfessor();
	}
}
